package com.ynitil.jfinal.config;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.ext.interceptor.SessionInViewInterceptor;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.ehcache.EhCachePlugin;
import com.jfinal.render.FreeMarkerRender;
import com.jfinal.render.ViewType;
import com.jfinal.template.Engine;

/**
 * @描述: 类说明描述
 * @创建人: 张飞
 * @创建时间: 2017-8-22 下午02:21:49
 */
public class JFConfig extends JFinalConfig {
	public Prop sysProp;//系统配置文件

	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		sysProp = (PropKit.use("sys.properties"));// 加载系统配置
		me.setDevMode(sysProp.getBoolean("devMode", false));// 是否打印控制台访问路由信息
		me.setViewType(ViewType.FREE_MARKER);// 使用Freemarker模板引擎
		// 配置Freemark
		FreeMarkerRender.setProperty("classic_compatible", "true");// 如果为null则转为空值,不需要再用!处理
		FreeMarkerRender.setProperty("whitespace_stripping", "true");// 去除首尾多余空格
		FreeMarkerRender.setProperty("date_format", "yyyy-MM-dd");
		FreeMarkerRender.setProperty("time_format", "HH:mm:ss");
		FreeMarkerRender.setProperty("datetime_format", "yyyy-MM-dd HH:mm");
		FreeMarkerRender.setProperty("default_encoding", "UTF-8");
	}

	/**
	 * 配置访问路由
	 */
	public void configRoute(Routes me) {
		String sysadmin = sysProp.get("sysadmin", "/admin");
		// me.add(sysadmin, AdminAction.class, "/WEB-INF/admin/admin");
		me.add(new RoutesAdmin());//装载路由

	}

	/**
	 * 配置数据库插件
	 */
	public void configPlugin(Plugins me) {
		me.add(new EhCachePlugin());// 添加EhCache缓存
		Prop jdbcProp = (PropKit.use("jdbc.properties"));// 加载JDBC配置文件
		C3p0Plugin c3p0Plugin = new C3p0Plugin(jdbcProp.get("jdbcUrl").trim(), jdbcProp.get("jdbcUser").trim(), jdbcProp.get("jdbcPass").trim());// 初始化C3P0连接池
		me.add(c3p0Plugin);
		ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);// 配置ActiveRecord插件
		arp.setContainerFactory(new CaseInsensitiveContainerFactory());// 不区分大小写
		arp.setShowSql(jdbcProp.getBoolean("showSQL", false));// 是否显示sql
		JFTableMaping.mapping(arp);// 装载Table与Model的映射
		me.add(arp);
	}

	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {
		me.add(new SessionInViewInterceptor(true));// 设置Session在JFinal中可用
//		me.add(new LoginActionInterceptor());//是否登录拦截器
//		me.add(new SessionInterceptor());//是否有权限拦截器
	}

	/**
	 * 配置启动处理器
	 */
	public void configHandler(Handlers me) {
		System.out.println("系统启动成功");
	}

	/**
	 * 配置自带模板引擎，禁用
	 */
	public void configEngine(Engine me) {
	}
}
